/* 
 * File:   Grafo.h
 * Author: Vagner Clementino
 *
 * Created on 07 de Abril de 2012, 11:22
 */
#define FALSO 0
#define VERDADEIRO 1
#define NAO_MATRICULADO -1
#define INFINITO -1

typedef int bool;

typedef struct{
    bool tem_aresta;
    int satisfacao;
    int nota_aluno;
    bool casamento_instavel;    
}aresta;

typedef struct{
    int num_alunos;
    int num_universidades;
    aresta** dados;    
}Grafo;

typedef Grafo* pGrafo;

/*Cria uma Grafo de inteiros de tamanho NxN onde N é o paramêtro tamanho
 *da função.
 */
Grafo* cria_grafo(int num_alunos, int num_universidades);

/*Desaloca o espaco de uma Grafo casamento*/
void desaloca_grafo(Grafo* g);

/*Atribui o valor 0 (zero) para cada celula da Grafo_casamento m de tamanho
 * tam_Grafo; */
void inicializa_grafo(Grafo** g);

/*Imprime os valores da Grafo_casamento m de tamanho tam_Grafo*/
void imprime_grafo(const Grafo* g);

/*Metodo que verifica se o aluno com id id_aluno esta matriculado em
 * alguma universidade com base no grafo g*/
bool esta_matriculado(int id_aluno, const Grafo* g);

int retorna_candidato_troca(int id_universidade, Grafo* g,int heuristica);




